其他
再有人问你 MySQL 索引原理,就把这篇文章甩给他!
The following article is from Hollis Author zyz1992
1、索引的本质
2、索引的分类
2.1、Hash 索引
Hash索引适合精确查找,但是范围查找不适合
2.2、二叉树
1. 二叉树的时间复杂度为 O(n) 1. 一个节点只能有两个子节点。即度不超过2 1. 左子节点 小于 本节点,右子节点 大于 本节点
1. 根节点会随着数据的改变而变更 1. 数据量越多,遍历次数越多,IO次数就越多,就越慢(磁盘的IO由树高决定)
2.4、B树(二三树)
2.5、B+树
在 B+ 树中,所有数据记录节点都是按照键值的大小存放在同一层的叶子节点上,而非叶子结点只存储key的信息,这样可以大大减少每个节点的存储的key的数量,降低B+ 树的高度 B+ 树叶子节点的关键字从小到大有序排列,左边结尾数据都会保存右边节点开始数据的指针。 B+ 树的层级更少:相较于 B 树 B+ 每个非叶子节点存储的关键字数更多,树的层级更少所以查询数据更快 B+ 树查询速度更稳定:B+ 所有关键字数据地址都存在叶子节点上,所以每次查找的次数都相同所以查询速度要比B树更稳定; B+ 树天然具备排序功能:B+ 树所有的叶子节点数据构成了一个有序链表,在查询大小区间的数据时候更方便,数据紧密性很高,缓存的命中率也会比B树高。 B+ 树全节点遍历更快:B+ 树遍历整棵树只需要遍历所有的叶子节点即可,,而不需要像 B 树一样需要对每一层进行遍历,这有利于数据库做全表扫描。
3、主键目录
4、索引页
5、索引页的分层
聚簇索引是 MySQL 基于主键索引结构创建的
6、非主键索引
7.回表
- EOF -
看完本文有收获?请转发分享给更多人
推荐关注「数据分析与开发」,提升数据技能
点赞和在看就是最大的支持❤️